package com.java1412.service;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * service中可以通过rest调用服务提供者的接口
 *
 * @author java1412
 * @since 2024-04-19 13:55:59
 */
@Service
public class HelloService {

    @Resource
    private RestTemplate restTemplate;

    // 指定hystrix断路器的兜底方案
    @HystrixCommand(fallbackMethod = "hiError") // fallbackMethod——指定兜底方案的方法
    public String hello(String name) {
        // SERVICE-HI：是eureka注册中心的应用名称
        // 第一个参数是调用的服务提供者的接口的路径
        // 第二个参数是提供者接口返回的值的类型
        return restTemplate.getForObject("http://SERVICE-HI/hi?name=" + name, String.class);
    }

    // 兜底方法
    public String hiError(String name) {
        return "hi," + name + ", sorry,error!";
    }
}
